package com.lry.basic.algorithm.simple;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author:刘仁有
 * @desc:
 * @email:953506233@qq.com
 * @data:2020/1/6
 */

//        给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
//        说明：本题中，我们将空字符串定义为有效的回文串。
//        示例 1:
//        输入: "A man, a plan, a canal: Panama"
//        输出: true
//
//        示例 2:
//        输入: "race a car"
//        输出: false

public class Palindrome {
    public static void main(String[] args) {
        System.out.println(isPalindrome("0P"));
    }
    //只考虑字母数字 ，忽略空格，标点符号，字母大小写
    public static boolean isPalindrome(String s) {

        if(null==s)return false;
        if("".equals(s))return true;
        s = s.toLowerCase();
        int i = 0, j = s.length()-1;
        char[] cs = s.toCharArray();
        while(i<j){
            if(!((cs[i]>=65&&cs[i]<=90)||(cs[i]>=97&&cs[i]<=122)||(cs[i]>=48&&cs[i]<=57))){
               i++;
               continue;
            }
            if(!((cs[j]>=65&&cs[j]<=90)||(cs[j]>=97&&cs[j]<=122)||(cs[j]>=48&&cs[j]<=57))){
                j--;
                continue;
            }
            if(cs[i]!=cs[j]){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }


}
